iT邦幫忙

2022 iThome 鐵人賽

DAY 6
1
AI & Data

那些在科技公司和 app 背後的資料科學系列 第 6

[Day 6] Instagram 藉由 Suggested Post,讓用戶「Feels Like Home」

  • 分享至 

  • xImage
  •  

Skylar 一如往常地在滑著 Instagram 時,突然發現在首頁,除了他原本追蹤的帳號以外,也多了一些貼文來自他沒有追蹤的帳號,那些貼文的左上角都寫著「Suggested Posts」。更令人詫異的是,這些內容也是 Skylar 會喜歡的,他好奇地點進去帳號,滑了幾篇內容之後就決定追蹤。

Instagram 怎麼知道 Skylar 會喜歡這個帳號呢?又和 Explore 有什麼不同呢?我們今天一起來深入研究吧!


如同在 Day 4 提到的,Instgram 主要分成三個區塊:

  • The Home Feed Ranking System:用戶追蹤的帳號所發表的內容。
  • Explore Ranking System:用戶自己探索可能會喜歡的其他公眾帳號。
  • Suggested Post:介於上面兩者中間,用戶沒有追蹤,但用戶可能會喜歡,且讓用戶覺得是自己發現的,希望讓用戶「Feels Like Home」。

今天要介紹的是 Suggested Post,所謂的「Feels Like Home」指的是推薦用戶如同在「The Home Feed」中,他們自己追蹤的帳號。


兩種推薦系統

推縣系統分為以下兩類:

Connected Recommendation System

例子:Facebook 的首頁、Instagram 的 Home Feed 或 YouTube 的訂閱功能。
用戶的興趣是外顯的,如 Facebook 上的好友、追蹤的粉絲專頁、加入的社群等等。演算法直接列出使用者訂閱的內容,再按照參與度、關聯、用戶興趣、內容品質和發表時間等等排序。

Unconnected Recommendation System

例子:Facebook 的廣告、Instagram 的 Suggested Post。
用戶的興趣是內隱的,意即無法直接從用戶追蹤清單選取得到內容,而是基於使用者的行為和興趣。


既然 Suggested Post 無法直接由用戶追蹤清單獲取候選清單,其推薦系統是如何設計的呢?我們一樣利用前幾篇文章也不斷提到的兩階段推薦系統分別說明。

Stage 1: Candidate Generation

用戶在 Instagram 的行為會建構出一個興趣網絡,每個節點代表用戶的興趣,例如他們追蹤的帳號所發表的文章。利用這些節點當作 KNN 模型的輸入,會輸出和節點相似的內容或帳號。

https://ithelp.ithome.com.tw/upload/images/20220917/201523250h5y8UZOgq.png

KNN 模型建構於兩個 ML 演算法:

Embeddings based similarity

利用使用者的行為資料以建構 account embeddings,以找出在向量空間中靠近、相似的帳號。
算法同 [[Powered by AI: Instagram’s Explore Recommender System]] 中計算 account embeddings 的方法,將此用戶互動的帳號、貼文當作句子中的序列。

Co-occurrence based similarity

這個方法的概念是 frequent pattern mining,步驟如下:

  1. 利用此用戶互動的內容,產生出會一起產生的內容清單。
  2. 內容清單中兩兩配對,計算每對同時出現的機率(例如太空貼文和美食貼文同時出現)。
  3. 集合所有內容、排序,並取前 N 個同時出現的內容。

舉例而言,Skylar 喜歡美食和攝影的內容,在第一步驟時將美食和攝影的內容配對。在第二步驟時計算這兩種貼文同時出現的頻率。最後,基於 seed(可能是 author seeds 或 media seeds),產生推薦內容清單。

https://ithelp.ithome.com.tw/upload/images/20220917/20152325jxha4PjRoT.png

Cold start problem

然而,要是此用戶為新用戶,沒有足夠的行為資料,要如何推薦內容呢?

有兩個解決辦法:

Fallback graph exploration

利用 one-hop 和 two-hop connections 產生內容候選清單。

例如 Skylar 幫媽媽辦了一個 Instagram 帳號,Skylar 媽在尚未按下任何愛心之前,可以利用 Skylar 媽追蹤的帳號當作 seed account 以產生推薦內容。比方說 Skylar 媽追蹤她最喜歡的廚師 Kyler,因此 Instagram 利用 Kyler 的帳號當作 seed account,再產生推薦內容給 Skylar 媽。

Popular media

推薦最熱門的內容,再利用用戶的行為逐步優化。


Stage 2: Candidate Selection

Instagram 基於正面因子和負面因子以排序候選清單,正面因子包含按愛心、留言和儲存;負面因子則是用戶按下不感興趣和減少此類貼文。

每篇貼文的數值基於 log 的線性組合計算而得:Value(Post) = (probability_like)^weight_like * (1 - probability_not_interested)^weight_see_less

權重的調整是藉由以下兩個方法:(1) 線下重複使用用戶資料 (2) 線上的 Bayesian optimization。

至於正面和負面行為的機率值,是藉由模型計算而得。

模型

Instagram 採用以下幾個模型:

Point-wise classification

最小化 cross-entropy。

  • MTML (Multi Task Multi Label Sparse Neural Nets):多個標籤,例如按愛心、儲存。
  • Gradient Boosted Decision Trees。

List-wise session based algorithms

如 LambdaRank 以最小化 NDCG loss。

模型的架構和權重會在線上或線下訓練時,不斷進行調整,也會經過 A/B testing。必要時,Instagram 也會採用上篇提過的 multi-stage ranking 和 distillation models。

模型使用的特徵陳列如下:

  • 貼文者與觀看者的互動
  • 貼文的品質
  • 用戶習慣的互動行為
  • User embedding
  • 貼文的內容分類及類型

以上只是幾個範例,不是所有使用的特徵。

"Feels Like Home"

最後,Instagram 強調,他們希望用戶在看到這些推薦內容時,能夠「Feels Like Home」,意即讓用戶覺得這些推薦內容是自己發現的。

為了達到此目的,Instagram 確保利用新模型推薦貼文的 author embedding 和原本就會在 Home Feed 的 authors embeddings 相似。
並在 candidate selection 步驟中,確保整體的 distribution 不會和 Home Feed 中的貼文差很多,也確認貼文的新舊程度、內容種類(照片、影片、相簿)和原本在 Home Feed 的貼文相差無幾。

另外,他們也會進行質性研究,細節請參考 [Day 2] Facebook 如何排序推薦內容(上)- 使用者調查的內容。


從 Day 2 到 Day 6,我們一起看了 Meta 分別在 Facebook 和 Instagram 如何實作演算法以推薦內容。明天開始,焦點會轉向 Netflix,歡迎明天回來繼續一起認識科技公司背後的演算法吧!


謝謝讀到最後的你,如果喜歡這系列,別忘了按下訂閱,才不會錯過最新更新,也可以按讚給我鼓勵唷!
並歡迎到我的 medium 逛逛!


Reference:


上一篇
[Day 5] Instagram 如何產出要讓用戶探索(Explore)的內容?(下)
下一篇
[Day 7] Netflix(一)- 為什麼我看到的和你的不同?你被 A/B Testing 了嗎?
系列文
那些在科技公司和 app 背後的資料科學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言